from comment.models import db
from datetime import datetime
from werkzeug.security import  generate_password_hash,check_password_hash
#用户的模型类
class User(db.Model):
    __tablename__='t_user'
    id = db.Column(db.BIGINT,primary_key=True,autoincrement=True)
    username=db.Column(db.String(64),doc='用户名')
    #数据库中的表里存放的是加密后的密文，采用flask提供的是hash算法
    password=db.Column(db.String(128),doc='密码')
    icon=db.Column(db.String(5000),doc='用户头像')
    email=db.Column(db.String(1000),doc='邮箱')
    nick_name=db.Column(db.String(5000),doc='昵称')
    note=db.Column(db.String(5000),doc='备注')
    phone=db.Column(db.String(11),doc='手机号')

    login_time=db.Column(db.DateTime,default=datetime.now(),doc='用户名登陆时间')
    create_time=db.Column(db.DateTime,default=datetime.now(),doc='用户名注册时间')
    update_time=db.Column(db.DateTime,default=datetime.now(),onupdate=datetime.now(),doc='用户名注册时间')
    status = db.Column(db.Integer,doc='用户状态')#0表示正常
    #是一个pwd属性的getter函数
    @property
    def pwd(self):
        return self.password
    #是一个pwd属性的setter函数
    @pwd.setter
    def pwd(self,x_password):
        '''
        根据明文的密码，转化成密文
        :param x_password: 密码的明文
        :return: 加密后的密文
        '''
        self.password=generate_password_hash(x_password)#根据flask提供的算法
    def check_password(self,x_password):
        #验证密码
        return  check_password_hash(self.password,x_password)